Chapter0 - 概论

电子计算机的发展过程

第一代电子计算机产生于1946-1958年,由电子管(vacuum tube)制作开关逻辑部件,使用插件板(plugboard)操作。第一代计算机的典型代表是 ENIAC 和 EDVC 。

  • ENIAC是第一台数字电子计算机
  • 1946年,冯 · 诺依曼(John von Neumann)和他的同事们发现了ENIAC的缺陷,提出了将程序放入内存,一次执行一条指令(顺序执行)的思想,去适应不同形式的计算。
  • 1949年,冯 · 诺依曼提议研制EDVC(electronic discrete variable computer),它是第一台使用磁带的计算机,由运算器、控制器、存储器、输入设备和输出设备五个部分组成,与现代计算机的结构一致。因此,现在的计算机通常被称为冯 · 诺依曼计算机。

第二代计算机形成于1959-1964年,使用晶体管制作开关逻辑部件,以批处理系统方式操作,运算速度达到每秒几十到几百万次,程序设计方面开始使用高级语言,代表计算机有IBM-7094。

第三代计算机形成于1965-1970年,使用集成电路 IC(integrated circuit)制作开关逻辑部件,运算速度达到每秒几百万到几千万次。

从1971年开始直到现在的计算机都属于第四代计算机,使用大规模集成电路 VLSI(very large scale integration)和超大规模集成电路 ULSI(ultra large scale integration)制作开关逻辑部件。

  • 第四代计算机一个发展方向是微型计算机,以单片机、笔记本电脑等为主。
  • 另一个发展方向是巨型化,即超级计算机。

第五代计算机时把信息采集、存储、处理、通信同人工智能结合在一起的智能型计算机系统。人机之间可以直接通过自然语言或图形/图像交换信息。

0x00 什么是操作系统

当使用计算机时,可能会单击鼠标激活屏幕上显示的某个应用程序的图符,然后这个应用程序便执行起来。

实际上,当单击这个图符时,首先由鼠标按钮产生中断,然后转入操作系统的中断处理,之后又通过相应的分析程序获取屏幕上这个图符所在位置的坐标,从而得知是哪个程序。在将该程序调入内存之前,首先要由进程管理模块为此程序建立进程,再由存储管理模块为此程序分配内存,然后由文件管理系统提供该程序在外存上的位置等属性信息,之后文件管理系统调用设备管理模块启动磁盘驱动器,并将这个程序从磁盘读入到内存中。这样一旦操作系统调度到这个进程,CPU便可执行由该进程定位的这个程序了。

image-20200915194209211
  • 操作系统定义(非严格)
    • 操作系统是一组管理计算机硬件资源的软件集合,它向计算机程序提供共性的服务
      • 提供一个计算机用户与计算机硬件系统之间的接口,使计算机系统更易于使用。(使用者)
      • 有效地控制和管理计算机系统中的各种硬件和软件资源,使之得到更有效的利用。(资源管理者)
      • 合理地组织计算机系统的工作流程,以改善系统性能(如响应时间、系统吞吐量)
  • 操作系统的作用

    • 用户与计算机硬件系统之间的接口(API/GUI)
      • 即:OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。
    • 系统资源的管理者(处理机、存储器、I/O设备等)
      • 处理机管理是用于分配和控制处理机
      • 存储器管理是负责内存的分配与回收
      • I/O设备管理是负责I/O设备的分配(回收)与操纵
      • 文件管理是用于实现文件的存取、共享和保护
    • 实现对计算机资源的抽象(OS是扩充机/虚拟机)
  • 现代操作系统的基本特征

    • 并发执行
    • 资源共享
    • 虚拟化管理
    • 不确定性事件的处理
  • 操作系统的工作模式

    • 内核态/管态
    • 用户态/目态
  • 几个术语

    • 特权指令/保护指令
    • 异常:中断、陷入(包括系统调用)
  • 分析操作系统的几种观点

    • 用户观点:操作系统为用户提供了哪些功能可以使用
    • 资源管理:回答了整个操作系统是由哪几部分组成的
    • 进程观点:指明了这些资源管理程序在什么时候开始起作用,以及它们在执行过程中是如何相互联系的
    • 模块分层设计:从操作系统构建的角度,考虑操作系统的结构

*处理器多级Cache的速度及容量:

  • L1 Cache:一级缓存的读取需要2-4个时钟周期,容量通常为16~32KB,处理器私有;
  • L2 Cache:二级缓存的读取需要10个左右的时钟周期,容量通常为128~256KB,处理器私有;
  • L3 Cache:三级缓存需要30-40个时钟周期,容量一般为2~16MB,由所有片内处理器共享。

0x01 操作系统的发展

1. 批处理系统

  • 批处理:

    • 把用户提交的作业成批送入计算机,由作业调度程序自动选择作业运行
  • 目的:

    • 缩短作业之间的交接时间
    • 减少处理机的空闲等待,提高系统效率
  • 批处理系统:

    • 加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令)。
    • 它又分为两个阶段:联机批处理系统脱机批处理系统
      • 首先出现的是联机批处理系统,即作业的输入/输出由CPU来处理
      • 为克服与缓解高速主机与慢速外设的矛盾,提高CPU的利用率,又引入了脱机批处理系统,即输入/输出脱离主机控制

1)联机批处理系统

联机批处理是由CPU直接控制作业流和输入/输出(I/O)设备。在批处理中,监督程序以作业流形式监控每个作业的运行。

在主机与输入机之间增加一个存储设备——磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:

  • 成批地把输入机上的用户作业读入磁带,依次把磁带上的用户作业读入主机内存并执行,然后把计算结果向输出机输出
  • 完成了上一批作业后,监督程序又从输入机上输入另一批作业,保存在磁带上,并按上述步骤重复处理。
image-20200912095927751
  • 优点

    • 监督程序不停地处理各个作业,从而实现了作业到作业的自动转接,减少了作业建立时间和手工操作时间,有效克服了人机矛盾,提高了计算机的利用率。
  • 不足

    • 在作业输入和结果输出时,主机的高速CPU仍处于空闲状态,即等待慢速的输入/输出设备完成工作:此时主机处于“忙等”状态。

2)脱机批处理系统

为了克服联机批处理存在的缺点,引入了脱机I/O技术,这种方式的显著特征是:增加一台不与主机直接相连而专门用于与输入/输出设备打交道的卫星机。其功能是:

(1)从输入机上读取用户作业并放到输入磁带上。

(2)从输出磁带上读取执行结果并传给输出机。

image-20200912100257491
  • 优势
    • 主机不直接与慢速的输入/输出设备打交道,而是与速度相对较快的磁带机发生关系,有效缓解了主机与设备的矛盾。主机与卫星机可并行工作,二者分工明确,可以发挥主机的高速计算能力。
  • 不足
    • 每次主机内存中仅存放一道作业,每当它运行期间发出输入/输出(I/O)请求后,高速的CPU便处于等待低速的I/O完成状态,致使CPU空闲。

批处理系统是为解决人机矛盾以及CPU和I/O设备之间的速度差异而发展起来的。它的出现改进了CPU和外设的使用效率,但仍存在着许多缺陷:

  • 卫星机与主机之间的磁带装卸仍需人工完成,操作员需要监督机器的状态信息;
  • 系统没有任何保护自身的措施

3)执行系统

在20世纪60年代初期,计算机硬件在两方面有了新的进展,一是通道的引入,二是中断技术的出现。借助于通道、终端技术,I/O工作可以在主机控制之下,与之并行工作 。因而监督程序不仅要负责调度作业自动地运行,而且还要提供I/O控制功能(即用户不能直接使用启用外设的指令),比原先的功能增强了,这种常驻内存的监督程序,被称为执行系统

  • 通道是一种I/O专用处理机,仅涉及I/O相关指令。

    • 它与CPU共享主存,负责外部设备与主存之间的信息传输。
    • 它能控制不止一台外设工作,且可以独立于CPU运行,从而使CPU和各种外部设备并行操作
  • 中断是指当主机接到外部硬件(如I/O设备)发来的信号时,马上停止当前程序的执行(断点),转去处理这一信号所代表的事件。处理完毕后,主机回到断点处继续执行。

4)多道批处理系统

多道程序设计技术
  • 允许多个程序同时进入内存并运行,即同时把多个程序放入内存中(前提是内存放的下),并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。
  • 多道程序设计技术不仅使CPU得到充分利用,同时也改善I/O设备和内存的利用率,从而提高了整个系统的资源利用率和系统吞吐量(即单位时间内处理作业(程序)的个数),最终提高了整个系统的效率。
单道 VS 多道

单道程序的运行过程:

  • 在A程序计算时,I/O空闲, A程序I/O操作时,CPU空闲(B程序也是同样);
  • 必须A工作完成后,B才能进入内存中开始工作,两者是串行的,全部完成共需时间=T1+T2。
image-20200912101213163

多道程序的运行过程:

  • 将A、B两道程序同时存放在内存中,它们在系统的控制下,可相互穿插、交替地在CPU上运行;
  • 当A程序因请求I/O操作而放弃CPU时,B程序就可占用CPU运行;
  • 显然,CPU和I/O设备都处于“忙”状态,大大提高了资源的利用率,从而也提高了系统效率,A、B全部完成所需时间<<T1+T2
image-20200912101226868
多道程序系统
  • 单处理机系统中多道程序运行时的特点

    • 多道:计算机内存中同时存放几道相互独立的程序;
    • 宏观上并行:同时进入系统的几道程序都处于运行过程中,即它们先后开始了各自的运行,但都未运行完毕;
    • 微观上串行:实际上,内存中的多道程序轮流地或分时地占有CPU,交替地执行。
  • 多道程序系统需要解决的问题

    • 在一个连续的内存空间,同时驻留多道程序。
    • 处理机的争夺
    • I/O设备的分配
    • 有效的组织不同程序的运行
    • 系统对各种存储介质的管
多道批处理系统

20世纪60年代中期,在前述的批处理系统中,引入多道程序设计技术后形成多道批处理系统(简称批处理系统)

  • 特征:

    • 多道:系统内可同时容纳多个作业。这些作业放在外存中,组成一个后备队列,系统按一定的调度原则每次从后备作业队列中选取一个或多个作业进入内存运行,运行作业结束、退出运行和后备作业进入运行均由系统自动实现,从而在系统中形成一个自动转接的、连续的作业流。
    • 成批:在系统运行过程中,不允许用户与其作业发生交互作用,即:作业一旦进入系统,用户就不能直接干预其作业的运行
  • 优势

    • 系统吞吐量大;资源利用率高
  • 不足

    • 平均周转时间长;不能提供交互作用能力

2. 分时系统

分时系统采纳了第一代与第二代计算机操作的优点,人机交互和及其利用率高。

  • What 分时系统

    • 分时系统中,多个用户分享使用同一台计算机,多个程序分时共享硬件和软件资源
  • 分时技术把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。

    • 由于CPU速度不断提高和采用分时技术,一台计算机可同时连接多个用户终端,而每个用户可在自己的终端上联机使用计算机,好像自己独占机器一样
    • 分时技术包括了时间片划分,时钟中断,调度CPU按照时间片轮流地执行同步的作业以及终端卡与终端的使用。
  • Why 分时系统

    • 批处理系统一次执行一个程序,I/O过程CPU空转
    • 为进一步提高CPU利用率,支持多用户、多进程
image-20200912102204864
  • 两种典型的分时系统
    • Multics/Unix (1968/1970)
    • IBM VM 360/370 (1966/1972)
  • 分时系统的特征
    • 多路性
      • 若干个用户同时使用一台计算机。
      • 微观上看是各用户轮流使用计算机;宏观上看是各用户并行工作。
    • 交互性
      • 用户可根据系统对请求的响应结果,进一步向系统提出新的请求。
      • 这种能使用户与系统进行人机对话的工作方式,明显地有别于批处理系统,因而,分时系统又被称为交互式系统。
    • 独立性
      • 用户之间可以相互独立,互不干扰。系统保证各用户程序运行的完整性,不会发生相互混淆或破坏现象。
    • 及时性
      • 系统可对用户的输入及时作出响应。分时系统性能的主要指标之一是响应时间,它是指:从终端发出命令到系统予以应答所需的时间

如今流行的Linux、Windows以及UNIX都是分时系统。

3. 实时系统

“实时”二字的含义是指计算机对于外来信息能够及时进行处理,并在被控对象允许的时间范围内作出快速反应。实时系统对响应时间的要求比分时系统更高,一般要求响应时间为秒级、毫秒级甚至微秒级

实时信息处理系统是指利用计算机对实时数据进行处理的系统。这类应用大多属于服务型工作。比如,

  • 自动订购飞机票、火车票系统
  • 情报检索系统
  • 炼钢、化工生产的过程控制系统
  • 航天和军事防空系统

实时系统的特点:

  • 及时响应
  • 高可靠性和安全性。实时系统必须首先保证高可靠和安全性,而系统的效率则置于次要地位。
  • 系统的整体性强
  • 交互会话活动较弱

4. 计算机网络和网络操作系统

利用通信线路,将分散在不同地点的一些独立自制的计算机系统相互连接,按照网络协议进行数据传输及通信,实现资源共享,这样的计算机系统的集合体称为计算机网络。

5. 分布式系统

分布式系统是一个一体化的系统,在整个系统中有一个全局的操作系统称为分布式操作系统,负责全系统的资源分配和调度、任务划分、信息传输、控制协调等工作,并未用户㧈一个统一的界面和标准的接口。用户通过这一界面实现所需的操作和使用系统的资源,至于使用的是哪个计算机的资源,则由操作系统统一安排,对用户透明。

计算机网络是分布式系统的物理基础

0x02 计算机硬件简介

详见《Computer Organization》

  • 计算机的存储结构
image-20200912095444095
  • 内存
  • 磁盘
  • I/O设备
  • 总线

0x03 操作系统的基本实现机制

在操作系统中,为控制和实现系统调用的机制称为陷入或异常处理机制,相应的由于系统调用而引起处理器中断的机器指令称为访管指令(supervisor)或陷入指令(trap)。

  • 系统调用需要触发trap指令,如基于x86的Linux系统,该指令为 int 0x80 或 sysenter

异常(exception)处理机制: 陷阱(trap)和中断(interrupt)

  • 异步异常(Asynchronous Exceptions
    • 中断是异步异常,可能随时发生,与处理器正在执行的内容无关。
    • 中断主要由I/O设备、处理器时钟或定时器产生,可以被启用或禁用。
    • 软件和硬件都可以产生中断。
  • 同步异常(Synchronous exceptions)
    • 它是某一特定指令执行的结果。在相同条件下,异常可以重现。例如内存访问错误、调试指令以及被零除。
    • 系统调用也视作同步异常,或trap。
    • 陷阱(trap)帧:完整的线程描述表的子集,用于现场保护陷阱处理程序处理少量事件,多数转交给其他的内核或执行体模块处
image-20200912103536176 image-20200912103808508

0x04 操作系统的特征和功能

1. 操作系统的特征

  • 并发(最基本)
  • 共享(最基本)
    • 互斥共享(打印机、变量)
    • 同时访问(宏观)
  • 虚拟
    • 多道程序中的CPU
    • SPOOLING(外围设备同时联机操作)
    • 虚拟存储
  • 不确定
    • 程序执行结果不确定
    • 多道程序中执行顺序不确

2. 操作系统应解决的基本问题

  • 功能:

    • 管理计算机系统的软、硬件资源
    • 处理机管理、存储器管理、设备管理和文件管理
  • 特性:

    • 并发性、共享性、不确定性、虚拟性
  • 解决的基本问题

    • 提供解决各种冲突(资源竞争引起)的策略
      • 处理机调度、进程调度、内存分配、设备分配
    • 协调并发活动的关系(提供流程控制和避免运行结果不确定 性)
      • 进程之间的通信,同步与互斥
    • 保证数据的一致性
      • 读写数据时,数据结构中的内容是否真实地记录了数据的实际情况
      • 在分布式处理时的共享数据的不同副本是否一致
    • 实现数据的存取控制
      • 共享程度、隐私程度、安全程度的控制

3. 操作系统的功能

1)处理机(进程)管理

  • 进程(线程)控制;
  • 进程(线程)同步;
  • 进程通信;
  • 进程(线程)调度

2)存储器管理(内存)

  • 任务:
    • 为多道程序的并发提供良好的环境
    • 便于用户使用存储器
    • 提高存储器利用率
    • 为尽量多的用户提供足够大的存储空间
  • 功能:
    • 内存分配:静态和动态分配。
    • 内存保护;
    • 地址影射;
    • 内存扩充

3)设备管理

  • 任务:
    • 为用户程序分配I/O设备
    • 完成用户程序请求的I/O操作
    • 提高CPU和I/O设备的利用率:中断;通道。
    • 改善人机界面
  • 功能:
    • 缓冲管理;
    • 设备分配;
    • 设备处理;
    • 虚拟设备功能

4)文件管理

  • 文件存储空间的管理;
  • 目录管理;
  • 文件读、写管理;
  • 文件保护;
  • 向用户提供接口

5)作业控制

  • 作业调度;

  • 作业控制。

  • 批量型作业

  • 终端型作业

0x05 *操作系统结构

模块接口

  • 内聚性

  • 耦合性

  • 优点:加速了操作系统的研制过程、增加了操作系统的灵活性、便于修改和维护。

  • 缺点:接口定义困难、无序性

有序分层法

  • 自底向上法、自顶向下法
  • 层次设置原则
    • 调用关系
    • 与硬件的关系
    • 与虚存的关系
    • 可扩充性
  • 调用方式
    • 只能调用直接下层
    • 可以调用所有下层
    • 可以部分调用下层
image-20200912110310738

虚拟机

  • 如IBM大型机上的系列操作系统

  • 基本思想:

    • 系统应该提供
      • 多道程序能力
      • 一个比裸机有更方便扩展界面的计算机 。
      • 但是二者的实现应该相互独立
  • 优缺点

    • 虚拟机概念可以实现完全保护
    • 用软件从硬件逐层扩展
    • 虚拟机方法把多道程序和扩充机器的功能完全分开了,使每一部分都简单、灵活,更易于维护。
    • 性能开销比较大

微内核结构

  • 内核中只包括中断处理、进程通信(IPC)、基本调度等
  • 文件系统、网络功能、内存管理、设备管理等作为服务在微内核上运行。
  • 优点:
    • 内核易于实现、可移植性好、配置灵活、适应分布式环境(本地内核与远程内核对服务同样的支持)
  • 缺点:
    • 速度较慢。(扩大内核减少切换;减少内核提高其他优点)

机制与策略分开

  • 灵活
  • 可扩展

0x06 目前常用的操作系统介绍

  • CP/M(Control Program Monitor)
  • Windows操作系统
  • UNIX操作系统
  • Linux操作系统

概念理解练习题

image-20200912111429402

考点积累

1. 常考知识点

  • 中断发生时,由硬件保护并更新程序指令计数器PC,而不是由软件完成,主要是因为:
    • 一次中断过程分为中断进入和中断处理过程。
    • 在中断进入过程中,首先保存PC、PS值,然后从中断向量地址中得到了PC、PS值放入寄存器
    • 软件的中断处理过程是先保存现场信息和参数传递,再执行中断处理程序,最后恢复和退出中断。
    • 简要地说,一次中断,两次保护现场。
    • 分布保护现场的原因是,进入软件的终端处理后,PC、PS寄存器里被填上了新内容。因此,PC、PS的保护只能由硬件完成
  • 系统调用是操作系统向用户提供的程序接口,用户编织程序时,调用系统调用命令,该命令经过编译后,形成若干参数和访管trap指令
    • 在操作系统中,为控制和实现系统调用的机制称为陷入或异常处理机制,相应的由于系统调用而引起处理器中断的机器指令称为访管指令(supervisor)或陷入指令(trap)。
  • 操作系统提供两类接口:
    • 一类是命令接口,它提供一组键盘和鼠标命令,供用户操作计算机。
    • 一类是程序接口,它提供一组系统调用,供程序访问操作系统的资源。
  • 响应时间是分时系统的重要指标,它是用户发生终端命令到系统做出响应的时间间隔。响应时间与CPU的处理速度,分时系统中联机终端用户数时间片的长短密切相关。
  • 实时系统要求系统响应快、安全保密、高可靠性有限的交互能力。相对来说,对系统资源的利用率不需要太强求。
  • 计算机系统指令分为特权指令非特权指令:特权指令在核心态下运行,非特权指令在用户态下运行。
    • 触发trap指令用户态下运行的一条指令。
  • 通用寄存器清零,一般不需要切换到内核态执行。
  • 多道程序设计的特点是多道、宏观上并行、微观上串行

  • 操作系统是计算机系统中的一个核心系统软件,它管理和控制计算机系统中的硬件和软件资源

  • 允许多个用户以交互式使用计算机的操作系统称为分时系统

  • 允许多个用户将多个作业提交给计算机集中处理的的操作系统称为批处理系统

  • 计算机系统能及时处理过程控制数据并做出响应的操作系统称为实时系统

  • 对操作系统的总体设计目标来说,批处理操作系统应注重提高计算机的效率,尽量增加系统的平均吞吐量,分时系统应保证用户所能忍受的响应时间,而实时系统则应在保证及时响应和处理有关时间的前提下,再考虑系统资源的利用率

  • 为了实现多道程序设计,计算机系统在硬件方面必须提供两种支持,它们是通道和中断技术

  • 批处理系统的基本特征是“批量”,它把提高作业的吞吐量作为主要设计目标,同时也兼顾作业的周转时间

  • 单道批处理系统是在解决人机矛盾CPU和I/O设备之间速度不匹配矛盾中发展起来的。

  • 如果一个操作系统兼有批处理、分时处理和实时处理三者或其中两者的功能,这样的操作系统称为通用操作系统

  • 在分时和批处理系统中引入了“前台”和“后台”作业的概念,其目的是为了提高CPU的利用率

  • 分时系统的主要特征有三个,多路性、交互性、独立性。(及时性)

  • 分时系统与实时系统的主要区别是及时性和高可靠性

  • 在逐级控制下进行的输入/输出操作称为联机输入/输出操作。

  • 并发共享是操作系统的两个最基本的特征,两者之间互为存在条件。

  • 批处理系统不允许用户随时干预自己程序的运行。

  • 程勋由用户态切换到核心态,会用到访管指令;访管指令是在用户态使用的,所以不可能是特权指令

2. 错题积累

image-20200915193336408